
import requests
import json

# 伪装自己的请求头信息
headers={
         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
         'cookie': 'kg_mid=18b1606dbcf2abb59c784b2e1ee18a39; kg_dfid=34d83V2O6hms4788IB17p43A; kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1682551761,1682645755; kg_mid_temp=18b1606dbcf2abb59c784b2e1ee18a39; Hm_lpvt_aedee6983d4cfc62f509129360d6bb3d=1682646857'
}

# 音乐集合的一个网址
list_url = 'https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime=1682647011990&mid=18b1606dbcf2abb59c784b2e1ee18a39&uuid=18b1606dbcf2abb59c784b2e1ee18a39&dfid=34d83V2O6hms4788IB17p43A&keyword=%E5%A4%A7%E9%B1%BC&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=0&iscorrection=1&privilege_filter=0&filter=10&token=&appid=1014&signature=5a45e030537945170df040e4e828bcb5'

# 一个音乐信息的url， 在{}后拼接hash值即可！！
# info_url = f'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={}'

# 去请求音乐集合网址的所有信息
list_resp = requests.get(list_url, headers = headers)
# print(list_resp.text)

# 以text（文字）信息加载数据， 取第十二个到最后第二个数据， 然后以json格式加载数据， 然后细分/data/lists
song_list = json.loads(list_resp.text[12:-2])['data']['lists'] # 数据提取操作
#
# print(song_list) song_list是一个集合， 每个元素是一个字典


for i, s in enumerate(song_list):    # 访问每个字典，根据key提取value
    print(f'{i+1}---{s.get("SongName")} --- {s.get("FileHash")}')

num = input('请输入获取的音乐： ')

# 拼接一个音乐提取网址
info_url = f'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={song_list[int(num)-1].get("FileHash")}'

# 对提取的网址内容json格式，然后细分到播放网址 .mp3 。
info_resp = requests.get(info_url, headers=headers)
print(info_resp.text)
print(info_resp.json())
# print(info_resp.json()['data']['play_url'])




# 下面的换成播放网址即可提取
# url = 'https://webfs.ali.kugou.com/202304270836/51a37bdf76e20f38fec1f4444619cad5/part/0/960111/KGTX/CLTX001/clip_bfbdd3df47727b701d4480ea36a8f73b.mp3'

url = info_resp.json()['data']['play_url']
r = requests.get(url)
# print(r.content)


with open('test.mp3', 'wb') as f:
    f.write(r.content)


'''
.text表示访问的数据是文字
.content表示是多媒体文件 (图片，音乐，视频)
.josn()访问的是json类型
'''













